package com.yy.utils.wxpay;

import java.io.IOException;
import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;

import org.jdom2.JDOMException;

import com.yy.utils.HttpUtil;
import com.yy.utils.XMLUtil4jdom;

/**
 * 微信支付处理方法
 * @author yy
 *
 */
public class WXPay{
	
	/**
	 * 获取支付url
	 * @param out_trade_no 订单号 （调整为自己的生产逻辑）String(32)
	 * @param body 浏览器打开的网站主页title名 -商品概述	样例:腾讯充值中心-QQ会员充值 String(128)
	 * @param total_fee 标价金额，价格的单位为分 
	 * @param product_id 此参数为二维码中包含的商品ID，商户自行定义。
	 * @return
	 */
	public static String weixinPay(String out_trade_no,String body,int total_fee,String product_id)  {
        // 账号信息 
        String appid = PayConfigUtil.APP_ID;  // appid  
        //String appsecret = PayConfigUtil.APP_SECRET; // appsecret  
        String mch_id = PayConfigUtil.MCH_ID; // 商业号  
        String key = PayConfigUtil.API_KEY; // key  
        //获取随机数
        String currTime = PayToolUtil.getCurrTime();  
        String strTime = currTime.substring(8, currTime.length());  
        String strRandom = PayToolUtil.buildRandom(4) + "";  
        String nonce_str = strTime + strRandom;  
        
        // 获取发起电脑 ip
        String spbill_create_ip = PayConfigUtil.CREATE_IP;
        // 回调接口   
        String notify_url = PayConfigUtil.NOTIFY_URL;
        String trade_type = "NATIVE";
          
        SortedMap<Object,Object> packageParams = new TreeMap<Object,Object>();  
        packageParams.put("appid", appid);  
        packageParams.put("mch_id", mch_id);  
        packageParams.put("nonce_str", nonce_str);  
        packageParams.put("body", body);  //（调整为自己的名称）
        packageParams.put("out_trade_no", out_trade_no);//商户订单号
        packageParams.put("total_fee", total_fee); //标价金额，价格的单位为分  
        packageParams.put("spbill_create_ip", spbill_create_ip);  //终端IP
        packageParams.put("notify_url", notify_url);  //通知地址
        packageParams.put("trade_type", trade_type);  //交易类型
        packageParams.put("product_id", product_id);  //商品ID
        //获取签名
        String sign = PayToolUtil.createSign("UTF-8", packageParams,key);  
        packageParams.put("sign", sign);
          
        String requestXML = PayToolUtil.getRequestXml(packageParams);  
        System.out.println(requestXML);  
   
        String resXml = HttpUtil.postData(PayConfigUtil.UFDODER_URL, requestXML);  
  
        String urlCode =null;
		try {
			 Map map = XMLUtil4jdom.doXMLParse(resXml);
			 urlCode= (String) map.get("code_url");  
		} catch (JDOMException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}  
        
        return urlCode;  
	}

}
